﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace ERPStore.Models
{
	/// <summary>
	/// Statistiques d'un produit
	/// </summary>
	[DataContract]
	public class ProductStatItem : ERPStore.Models.IModelIdentity
	{
		public ProductStatItem()
		{
			SaleTotal = 0;
			PurchaseTotal = 0;
			Balance = 0;
		}

        /// <summary>
        /// Identifiant unique de la stat
        /// </summary>
        /// <value>The id.</value>
		[DataMember]
	    public int Id { get; set; }
		/// <summary>
		/// Identifiant unique du produit.
		/// </summary>
		/// <value>The product id.</value>
		[DataMember]
		public int ProductId { get; set; }
		/// <summary>
		/// Code du produit.
		/// </summary>
		/// <value>The code.</value>
		[DataMember]
		public string Code { get; set; }
		/// <summary>
		/// Titre du produit.
		/// </summary>
		/// <value>The title.</value>
		[DataMember]
		public string Title { get; set; }
        /// <summary>
        /// Nombre d'impressions dans les listes
        /// </summary>
        /// <value>The print count in list.</value>
		[DataMember]
		public int PrintCount { get; set; }
		/// <summary>
		/// Nombre de visites.
		/// </summary>
		/// <value>The visit count.</value>
		[DataMember]
		public int VisitedCount { get; set; }
		/// <summary>
		/// Nombre de visiteurs.
		/// </summary>
		/// <value>The visit count.</value>
		[DataMember]
		public int VisitorCount { get; set; }
		/// <summary>
		/// Nombre d'ajout au panier.
		/// </summary>
		/// <value>The cart count.</value>
		[DataMember]
		public int CartCount { get; set; }
		/// <summary>
		///  Nombre de commandes.
		/// </summary>
		/// <value>The order count.</value>
		[DataMember]
		public int OrderCount { get; set; }

        /// <summary>
        /// Nombre de clicks externes
        /// </summary>
        /// <value>The click count.</value>
		[DataMember]
		public int ClickCount { get; set; }

		/// <summary>
		/// Nombre de clicks payants 
		/// </summary>
		[DataMember]
		public int ClickPaidCount { get; set; }

		/// <summary>
		/// Prix de vente du jour (offre incluse)
		/// </summary>
		[DataMember]
		public decimal SalePrice { get; set; }

		/// <summary>
		/// Nombre de jours depuis la dernière vente
		/// </summary>
		[DataMember]
		public int? DayCountSinceLastSale { get; set; }

		/// <summary>
		/// Dernier prix vendu
		/// </summary>
		[DataMember]
		public decimal? LastSalePrice { get; set; }

		/// <summary>
		/// Taux de vente , plus le chiffre est proche de zero plus le produit est un best seller
		/// </summary>
		[DataMember]
		public decimal? SaleRate { get; set; }

		/// <summary>
		/// Permet de savoir si un produit possède un code barre
		/// </summary>
		[DataMember]
		public bool? HasBarCode { get; set; }

		/// <summary>
		/// Nombre de sources ayant banni le produit
		/// </summary>
		[DataMember]
		public int BanishmentCount { get; set; }

		/// <summary>
		/// Profondeur de visite post fiche produit
		/// </summary>
		[DataMember]
		public double AverageOfPostVisitedPageCount { get; set; }

		/// <summary>
		/// Nombre de commentaires
		/// </summary>
		[DataMember]
		public int? CommentCount { get; set; }

		/// <summary>
		/// Total Vente
		/// </summary>
		[DataMember]
		public decimal SaleTotal { get; set; }

		/// <summary>
		/// Total Achat
		/// </summary>
		[DataMember]
		public decimal PurchaseTotal { get; set; }

		/// <summary>
		/// Balance (Vente - Achat)
		/// </summary>
		[DataMember]
		public decimal Balance { get; set; }

	}
}
